﻿Imports System.Data.SqlClient

Public Class Importar

    Private Sub btnCargar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCargar.Click
        FolderBrowserDialog1.Description = "Indique ubicación de archivos a importar"
        FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal
        FolderBrowserDialog1.ShowDialog()

        If FolderBrowserDialog1.SelectedPath <> "" Then
            If System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\ventas.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\presupuesto.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\presupuesto_detalle.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\catalogo.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\cliente.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\empleado.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\orden_rma.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\orden_servicio.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\orden_servicio_consumos.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\orden_servicio_detalle.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\venta_detalle.txt") And _
                System.IO.File.Exists(FolderBrowserDialog1.SelectedPath + "\sorteo.txt") Then

                btnIniciar.Enabled = True
                txtRuta.Text = FolderBrowserDialog1.SelectedPath

            Else
                MessageBox.Show("Debe seleccionar un directorio que posea los archivos:" _
                                + vbCrLf + vbCrLf + "Ventas, Orden_Servicio, Orden_servicio_detalle, Orden_servicio_consumos, Presupuesto, Presupuesto_detalle", "Error en importación", MessageBoxButtons.OK, MessageBoxIcon.Error)
                btnIniciar.Enabled = False

            End If
        End If
    End Sub


    Private Sub btnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIniciar.Click
        Dim Cod_Suc As Int32
        Try
            Select Case cmbSucursal.Text
                Case "SUCURSAL 1"
                    Cod_Suc = 1
                Case "SUCURSAL 2"
                    Cod_Suc = 2
                Case "CASA CENTRAL"
                    Cod_Suc = 3
            End Select

            If Cod_Suc = Configuracion.Cod_Suc Then
                MessageBox.Show("No puede importar datos de la propia sucursal.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If

            If validarArchivos() Then
                If eliminarTablas(Cod_Suc) Then
                    importar()
                    MessageBox.Show("Importado de datos realizado con éxito", "Importado de tablas realizado con éxito", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Else
                    MessageBox.Show("No se pudo importar los datos, comuniquese con sistemas.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Else
                MessageBox.Show("No se encontraron los archivos necesarios para la importación " & vbNewLine & _
                                "En el directorio especificado.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub

    Private Function eliminarTablas(ByVal Cod_Suc As Int32) As Boolean
        Dim Cn As New SqlConnection
        Dim Cm As New SqlCommand

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()

            Cm.Connection = Cn
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_BORRA_TABLAS"

            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Cod_Suc

            Cm.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Throw New Exception("Error al borrar los datos anetes de importar")
        Finally
            Cn.Close()
            Cm.Dispose()
            Cn.Dispose()
        End Try
    End Function

    Private Sub importar()
        Dim cmdBCP As String = ""
        Dim p As Process = New Process()
        Dim psi As ProcessStartInfo = New ProcessStartInfo("cmd.exe")

        pbImportar.Value = 0
        pbImportar.Visible = True
        pbImportar.Maximum = 12

        'mantiene el cmd oculto
        psi.WindowStyle = ProcessWindowStyle.Hidden

        For cont As Integer = 1 To 11 Step 1
            pbImportar.Value = cont

            Select Case cont
                Case 1
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.empleado in " & Chr(34) & txtRuta.Text & "\empleado.txt"" -c -T -S localhost\sqlexpress"
                Case 2
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.cliente in " & Chr(34) & txtRuta.Text & "\cliente.txt"" -c -T -S localhost\sqlexpress"
                Case 3
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.catalogo in " & Chr(34) & txtRuta.Text & "\catalogo.txt"" -c -T -S localhost\sqlexpress"
                Case 4
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.presupuesto in " & Chr(34) & txtRuta.Text & "\presupuesto.txt"" -c -T -S localhost\sqlexpress"
                Case 5
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.presupuesto_detalle in " & Chr(34) & txtRuta.Text & "\presupuesto_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 6
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.ventas in " & Chr(34) & txtRuta.Text & "\ventas.txt"" -c -T -S localhost\sqlexpress"
                Case 7
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.venta_detalle in " & Chr(34) & txtRuta.Text & "\venta_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 8
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.orden_servicio in " & Chr(34) & txtRuta.Text & "\orden_servicio.txt"" -c -T -S localhost\sqlexpress"
                Case 9
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.orden_servicio_detalle in " & Chr(34) & txtRuta.Text & "\orden_servicio_detalle.txt"" -c -T -S localhost\sqlexpress"
                Case 10
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.orden_servicio_consumos in " & Chr(34) & txtRuta.Text & "\orden_servicio_consumos.txt"" -c -T -S localhost\sqlexpress"
                Case 11
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.orden_rma in " & Chr(34) & txtRuta.Text & "\orden_rma.txt"" -c -T -S localhost\sqlexpress"
                Case 12
                    cmdBCP = "bcp UTN_INFORMATICA.dbo.sorteo in " & Chr(34) & txtRuta.Text & "\sorteo.txt"" -c -T -S localhost\sqlexpress"
            End Select

            psi.Arguments = "/c " + cmdBCP
            p.StartInfo = psi
            p.Start()
            Dim i As Int32
            For i = 1 To 100000000
                ''no hago nada, hago tiempo
            Next
        Next
        pbImportar.Value = 12
        pbImportar.Visible = False
    End Sub
    Private Function validarArchivos() As Boolean
        Dim i As Int32
        For i = 1 To 100000000
            ''no hago nada, hago tiempo
        Next
        If System.IO.File.Exists(txtRuta.Text.Trim + "\ventas.txt") And _
                System.IO.File.Exists(txtRuta.Text.Trim + "\presupuesto.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\presupuesto_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\catalogo.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\cliente.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\empleado.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\orden_rma.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\orden_servicio.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\orden_servicio_consumos.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\orden_servicio_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\venta_detalle.txt") And _
                    System.IO.File.Exists(txtRuta.Text.Trim + "\sorteo.txt") Then
            Return True
        Else
            'System.IO.Directory.Delete(txtRuta.Text, True)
            Return False
        End If

    End Function

    Private Sub Importar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        pbImportar.Visible = False
        cmbSucursal.SelectedIndex = 0
    End Sub
End Class